package com.hnucm.ktstudy.base

import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

/**
 * 1.什么是协程
 *  协程是一个协同程序，就是一个线程框架
 * 2.协程能解决什么问题
 *  a.处理耗时任务 (Long running tasks)，这种任务常常会阻塞住主线程；
    b.保证主线程安全 (Main-safety) ，即确保安全地从主线程调用任何 suspend 函数。
 *  c.嵌套的数据回调
 *  request(url){
 *      request(url){
 *          request(url){
 *              ···
 *          }
 *      }
 *  }
 */
fun main(){
    //如何启动一个协程
    runBlocking {//阻塞当前线程 等待子协程执行完毕
        //协程可以并发
        launch {
            //启动一个协程
            val result=doWork()
            println(result)
        }
        launch {

        }
    }

//    启动协程方式二(不推荐)
//    GlobalScope.launch {
//        println("全局协程作用域")
//    }
}

//suspend挂起函数只能在协程作用于中使用
suspend fun doWork(): String {
    //模拟数据请求耗时操作
    delay(1000)
    return "Success"
}